import { defineStore } from 'pinia';
import {ElMessage, ElMessageBox} from "element-plus";
import {notNull} from "/@/utils/StringUtils";
import { formatDate } from "/@/utils/formatTime";
import { umsMemberApi } from "/@/api/ums/member";

/**
 * 客户详情 - 全局缓存
 */
export default defineStore('customerDetail', {
	state: ():any => ({
		memberId: '',// 当前查看用户的信息主键
		detailData: {},// 当前查看用户的信息
		contactList: [],// 联系人矩阵
		contactLoading: false,// 联系人矩阵加载
		userLabelList: [],// 用户画像列表
		evaluationList: [],// 成交预估标签列表
		evaluationLoading: false,// 成交预估标签列表 - 加载显示
		evaluationRateText: true, // 是否显示 成交预估标签列表提示语
		evaluationRateTextList: ['低', '中下', '中', '中上', '高'],// 成交预估标签列表提示语
		customerPortraitList: [],// 客户画像列表
		customerInvoice: {},// 客户发票信息
		opportunityList: [],// 机会列表信息
		opportunityLoading: false, // 机会列表加载显示隐藏控制
	}),

	getters:{},

	actions: {

		/** 添加机会 */
		addOpportunity(obj:any){
			if (!obj) return

		},

		/** 追加会员信息 */
		async appendMemberDetail(){
			try {
				const {data} = await umsMemberApi().appendById({'id': this.memberId})
				if (!data) return
				const {province, provincecode, city, citycode, district, adcode, remark} = data
				this.detailData['province'] = province
				this.detailData['provincecode'] = provincecode
				this.detailData['city'] = city
				this.detailData['citycode'] = citycode
				this.detailData['district'] = district
				this.detailData['adcode'] = adcode
				this.detailData['remark'] = remark

			}catch (e:any) {
				console.log('加载客户发票信息异常捕获\n',e)
				ElMessage.error(e.message)
			}
		},

		/** 加载机会阶段列表 */
		async loadOpportunityList(){
			this.opportunityLoading = true
			try{
			}catch (e:any) {
				console.log('加载机会列表失败捕获\n',e);
				// ElMessage.error(e.message)
			}
			this.opportunityLoading = false
		},

		/** 加载客户发票信息 */
		async loadCustomerInvoice(){

		},

		/** 加载客户画像 */
		async loadCustomerPortraitList(){

		},

		/** 点击成交评估某个表格的评分 */
		async changeEvaluationItem(object: any) {

		},

		/** 加载成交评估列表 */
		async loadEvaluationList(): Promise<void> {

		},

		/** 设置当前客户信息 */
		init(){
			// 当前查看的用户主键
			this.memberId = this.detailData.memberId
			// 加载机会列表
			this.loadOpportunityList()
			// 加载联系人
			this.loadContactsList()
			// 加载成交评估
			this.loadEvaluationList()
			// 加载用户画像
			this.loadCustomerPortraitList()
			// 加载发票信息
			this.loadCustomerInvoice()
			// 追加会员信息
			this.appendMemberDetail()
		},

		/**
		 * <p>客户详情加载联系人列表</p>
		 * @author starshine 小郭
		 */
		loadContactsList(){

		},

		/** 设置默认联系人 */
		async settingDefContact(object:any){

		},

		/**
		 * <p>保存联系人 - 包含有新增和修改 </p>
		 * @author starshine 小郭
		 */
		async saveContact(index: any) {

		},

		/**
		 * <p>删除联系人</p>
		 * @author starshine 小郭
		 */
		async deleteContact(index:number){

		},

		/** 重置数据 */
		destroy(){
			this.memberId = ''  // 当前查看用户的信息主键
			this.detailData =  {} // 当前查看用户的信息
			this.contactList =  [] // 联系人矩阵
			this.userLabelList =  [] // 用户画像列表
			this.evaluationList =  [] // 成交预估标签列表
			this.customerPortraitList =  [] // 客户画像列表
			this.customerInvoice = {} // 客户发票信息
			this.opportunityList = [] // 机会列表信息
		},

	},

	persist: {
		// 开启持久化
		enabled: true,
		strategies: [
			{
				key: '17-work-customerDetailCache',
				storage: localStorage, // 本地缓存
				paths: ['evaluationRateText']
			},
		],
	},

});


interface stageLineItem {
	label: string,
	time: string,
	value: number | string,
}
